package com.whfc.ms.api.emp.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppFaceGateConfigDTO;
import com.whfc.emp.dto.AppFaceGateDTO;
import com.whfc.emp.dto.AppFaceGateEmpDTO;
import com.whfc.emp.dto.AppFaceGatePlatformDTO;
import com.whfc.emp.param.AppFacaGateEditParam;
import com.whfc.emp.param.AppFaceGateAddParam;
import com.whfc.emp.param.AppFaceGateGrantEmpParam;

import java.util.List;

/**
 * @Description 闸机管理
 * @Author hw
 * @Date 2021/1/4 11:42
 * @Version 1.0
 */
public interface MsAppFaceGateService {

    /**
     * 获取闸机列表
     *
     * @param deptId
     * @param keyword
     * @return
     */
    ListData<AppFaceGateDTO> list(Integer deptId, String keyword);

    /**
     * 添加闸机
     *
     * @param request
     */
    void add(AppFaceGateAddParam request);

    /**
     * 修改闸机
     *
     * @param request
     */
    void edit(AppFacaGateEditParam request);

    /**
     * 删除闸机
     *
     * @param faceGateId
     */
    void del(Integer faceGateId);

    /**
     * 查看闸机授权人员
     *
     * @param faceGateId
     * @param keyword
     * @param groupId
     * @param workTypeId
     * @param type
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<AppFaceGateEmpDTO> empList(Integer faceGateId, String keyword, Integer groupId, Integer workTypeId, Integer type, Integer pageNum, Integer pageSize);

    /**
     * 获取未授权的人员
     *
     * @param deptId
     * @param faceGateId
     * @param groupId
     * @param keyword
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<AppFaceGateEmpDTO> unGrantEmpList(Integer deptId, Integer faceGateId, Integer groupId, String keyword, Integer pageNum, Integer pageSize);

    /**
     * 闸机-添加人员授权
     *
     * @param request
     */
    void faceGateGrantEmp(AppFaceGateGrantEmpParam request);

    /**
     * 闸机-取消人员授权
     *
     * @param request
     */
    void faceGateRevokeEmp(AppFaceGateGrantEmpParam request);

    /**
     * 闸机取消人员授权
     *
     * @param deviceKey
     * @param personGuid
     * @return
     */
    String deviceAuthorizationCancel(String deviceKey, String personGuid);

    /**
     * 同步闸机授权人员
     *
     * @param faceGateId
     */
    void sync(Integer faceGateId);

    /**
     * 查询可选闸机平台
     *
     * @param deptId
     * @return
     */
    List<AppFaceGateConfigDTO> getFaceGateConfigList(Integer deptId);

    /**
     * 查询所有闸机平台
     *
     * @return 闸机平台
     */
    List<AppFaceGatePlatformDTO> getFaceGatePlatformList();

    /**
     * 闸机开门
     *
     * @param faceGateId
     */
    void openDoor(Integer faceGateId);

    /**
     * 获取授权失败的人员
     *
     * @param faceGateId
     * @param groupId
     * @param keyword
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<AppFaceGateEmpDTO> failList(Integer faceGateId, Integer groupId, String keyword, Integer pageNum, Integer pageSize);
}
